﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>RegWrite</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/commands.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" type="text/css" media="print">
</head>
<body>

<h1>RegWrite</h1>

<p>写入一个值到注册表中。</p>

<p class="CommandSyntax">RegWrite, ValueType, RootKey, SubKey [, ValueName, Value]</p>
<h3>参数 </h3>
<table border="1" width="100%" cellspacing="0" cellpadding="3" bordercolor="#C0C0C0">
  <tr>
    <td>ValueType</td>
    <td>只能是 REG_SZ ，REG_EXPAND_SZ ，REG_MULTI_SZ ，REG_DWORD 或者 REG_BINARY 。</td>
  </tr>
  <tr>
    <td width="15%">RootKey</td>
    <td width="85%">只能是 HKEY_LOCAL_MACHINE 、HKEY_USERS 、HKEY_CURRENT_USER 、HKEY_CLASSES_ROOT 、HKEY_CURRENT_CONFIG 其中之一（或者它们的缩写，例如 HKLM ）。要访问远程注册表，在前面加上电脑名和一个冒号，例如：\\workstation01:HKEY_LOCAL_MACHINE</td>
  </tr>
  <tr>
    <td>SubKey</td>
    <td>子键的名字（例如 Software\SomeApplication）。如果 <em>SubKey</em> 不存在，将会自动创建（在它的父类之下，如果有的话）。如果 <em>SubKey</em> 留空，将把值直接写入到 <em>RootKey</em> 中（某些系统会拒绝将值直接写入 HKEY_CURRENT_USER 根键之下）。</td>
  </tr>
  <tr>
    <td>ValueName</td>
    <td>需要写入值的项的名称。如果留空或省略，默认修改的是 <em>Subkey</em> 的默认值，也就是在 RegEdit 中显示为“(Default)/默认”的值</td>
  </tr>
  <tr>
    <td>Value</td>
    <td>需要写入的值。如果省略，默认是一个空字符串，或 0 ，这个取决于 <em>ValueType</em> 。如果写入的文本过长，可以使用 <a href="../Scripts.htm#continuation">continuation section/字符串分段</a> 的方法将它分为几个短小的段落，这样可以增加代码的可读性和可维护性。</td>
  </tr>
</table>
<h3>ErrorLevel</h3>
<p>如果遇到问题，<a href="../misc/ErrorLevel.htm">ErrorLevel/错误级别</a> 被设置为 1 ，否则为 0 。</p>
<h3>注意</h3>
<p>如果 <em>ValueType</em> 是 REG_DWORD ，<em>Value</em> 的取值范围是 -2147483648 到 4294967295（0xFFFFFFFF）。</p>
<p>REG_BINARY/二进制 和 REG_MULTI_SZ/多字符串 类型的值最多只能写入 64KB ，其它类型的值则没有限制。但是在 Windows 95/98/ME 下，所有类型的值最多只能写入 64KB 。如果超过 64KB ，则超过范围之后的数据将不会被写入。也就是说，在一个比较大的字符串中，只有最开始的 64KB 数据会被写入注册表。</p>
<p>当写入一个 REG_BINARY/二进制 类型的值的时候，使用一个16进制的字符串。例如，REG_BINARY/二进制 值为 01,a9,ff,77 ，写入的字符串为 01A9FF77 。</p>
<p>当写入一个 REG_MULTI_SZ/多字符串 类型的值的时候，你必须使用换行符（`n）来分隔各个部分，最后一个部分的结尾可以不使用换行符。任何一个部分都不能为空。也就是说，不要在一行中连着使用两个换行符（`n`n），因为这样会写入一个 shorter-than-expected/比预期短 的值。注意：Windows 95 不支持 REG_MULTI_SZ/多字符串 类型的值。</p>
<p>要返回多个注册表值或对多个注册表值进行操作，推荐使用 <a href="LoopReg.htm">registry-loop</a> 。</p>
<p>要获取访问远程注册表的详细资料，可以查看 <a href="LoopReg.htm">registry-loop</a> 中的注释。</p>
<h3>相关命令</h3>


<p><a href="RegDelete.htm">RegDelete</a>, <a href="RegRead.htm">RegRead</a>, <a href="LoopReg.htm">Registry-loop</a>, <a href="IniWrite.htm">IniWrite</a> </p>
<h3>示例</h3>
<pre class="NoIndent">RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\TestKey, MyValueName, Test Value
RegWrite, REG_BINARY, HKEY_CURRENT_USER, Software\TEST_APP, TEST_NAME, 01A9FF77
RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER, Software\TEST_APP, TEST_NAME, Line1`nLine2</pre>

</body>
</html>
